package com.doit.day01;

import redis.clients.jedis.Jedis;

import java.util.Random;
import java.util.Scanner;

/**
 * 需求：使用redis模拟手机验证码发送，验证码有效期60s，
 * 验证验证码输入不能超过3次，超过3次今天就没机会了
 */
public class _02_手机号验证码需求 {
    public static void main(String[] args) {
        Jedis jedis = MyTools.getJedis();
        //设置一些小场景
        System.out.println("在一个夜黑风高的白天，浩南准备梭哈一把......进入到了某个小网站！！！");
        //要求输入手机号
        System.out.println("尊敬的vip客户，请输入您的手机号:");

        //键盘录入手机号
        Scanner sc = new Scanner(System.in);
        String phone = sc.nextLine();
        //验证手机号
        String regex = "^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
        boolean flag = phone.matches(regex);
        if(flag){
            //证明你手机号没问题
            //发送验证码
            String code = getCode();
            System.out.println("您的验证码是："+code);
            //将code放到redis中去，然后还要设置过期时间为60s
            jedis.setex(phone,60,code);
            //输入验证码
            System.out.println("请输入您的验证码：");
            String yourCode = sc.nextLine();

            int cnt = 1;
            while (cnt <3){
                //验证验证码
                if(yourCode.equals(jedis.get(phone))){
                    System.out.println("验证成功，祝您好运");
                    cnt = 3;
                }else {
                    System.out.println("请输入您的验证码：");
                    yourCode = sc.nextLine();
                    cnt ++;
                }
            }



        }else {
            System.out.println("滚，手机号都输不对，还进小网站，脸呢！！！");
        }
    }

    public static String getCode(){
        //如何生成这个验证码呢？？
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }

}
